home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 / Aminet - June 1993 [Walnut Creek].iso / usenet / sources / volume90 / libraris / ezlib / part02 < prev   
Encoding:
Internet Message Format  |  1990-10-10  |  55.8 KB

  1. Path: abcfd20.larc.nasa.gov!amiga-request
  2. From: amiga-request@abcfd20.larc.nasa.gov (Amiga Sources/Binaries Moderator)
  3. Subject: v90i270: ezlib - a library of functions; make programming easier, Part02/02
  4. Reply-To: nick@chopin.uucp (Dominic Giampaolo)
  5. Newsgroups: comp.sources.amiga
  6. Message-ID: <comp.sources.amiga:v90i270@abcfd20.larc.nasa.gov>
  7. References: <comp.sources.amiga:v90i269@abcfd20.larc.nasa.gov>
  8. Date: 10 Oct 90 01:00:08 GMT
  9. Approved: tadguy@uunet.UU.NET (Tad Guy)
  10. X-Mail-Submissions-To: amiga@uunet.uu.net
  11. X-Post-Discussions-To: comp.sys.amiga
  12.  
  13. Submitted-by: nick@chopin.uucp (Dominic Giampaolo)
  14. Posting-number: Volume 90, Issue 270
  15. Archive-name: libraries/ezlib/part02
  16.  
  17. #!/bin/sh
  18. # This is a shell archive.  Remove anything before this line, then unpack
  19. # it by saving it into a file and typing "sh file".  To overwrite existing
  20. # files, type "sh file -c".  You can also feed this as standard input via
  21. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  22. # will see the following message at the end:
  23. #        "End of archive 2 (of 2)."
  24. # Contents:  Demo.uu doc/README ez.lib.uu src/demo.c src/getstring.c
  25. #   src/screen.c
  26. # Wrapped by tadguy@abcfd20 on Tue Oct  9 20:59:52 1990
  27. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  28. if test -f 'Demo.uu' -a "${1}" != "-c" ; then 
  29.   echo shar: Will not clobber existing file \"'Demo.uu'\"
  30. else
  31. echo shar: Extracting \"'Demo.uu'\" \(12809 characters\)
  32. sed "s/^X//" >'Demo.uu' <<'END_OF_FILE'
  33. Xbegin 644 Demo
  34. XM```#\P`````````#``````````(```AK````;@````$```/I```(:T[Z%Z1.-
  35. XM5?_H0JW__$*M__A"K?_T0JW_[$*M_^A(>``#3KH2V%A/2H!F*$AZ`O).NA<T;
  36. XM6$\O`$AZ`MQ.NAZ&+P!.NAZ<3^\`#$AX``I.NAR,6$](>``#2'D``(``3KH/9
  37. XM6%!/*T#__$JM__QF#DZZ%BY(>``*3KH<9%A/0J="IT*G0J<@;?_\2&@`+$ZZ8
  38. XM'[Q/[P`42'@`"4*G2'@`#TAX``$@;?_\2&@`+$ZZ'YY/[P`40J=(>``/2'@`B
  39. XM#TAX``(@;?_\2&@`+$ZZ'X!/[P`40J=(>``'2'@`#TAX``,@;?_\2&@`+$ZZ<
  40. XM'V)/[P`42'@`#D*G2'@`!TAX``0@;?_\2&@`+$ZZ'T1/[P`40J=(>``/0J=(?
  41. XM>``%(&W__$AH`"Q.NA\H3^\`%$AX__](>/__0J="IR\M__Q.N@Y23^\`%"M`,
  42. XM__A*K?_X9A@O+?_\3KH1/%A/3KH52$AX``I.NAM^6$](>/__2'H!PB\M__A.1
  43. XMNB`<3^\`#"!M__@K:``R__!(>``,2'H!MTZZ!=)03RM`_^Q*K?_L9PXO+?_LP
  44. XM+RW_\$ZZ'IA03TAZ`;=(>@&>+RW__$ZZ`VA/[P`,*T#_Z$JM_^AG9$AX`"A("
  45. XM>`"@+RW_\$ZZ'D9/[P`,2'H!JDZZ%8A83R\`2'H!DB\M__!.NAYN3^\`#"\M;
  46. XM_^A.NA5L6$\O`"\M_^@O+?_P3KH>4D_O``PO+?_H3KH54%A/4H`O`"\M_^A._
  47. XMNAT<4$\O+?_P3KH"#%A/2'@`*TAZ`5A(>`"O2'@`TB\M__A.N@H.3^\`%"M`1
  48. XM__1(>`"62'@`R"\M__!.NAVX3^\`#$AZ`5Q.NA3Z6$\O`$AZ`3,O+?_P3KH=T
  49. XMX$_O``Q(>`"J2'@`OB\M__!.NAV(3^\`#$AZ`6A.NA3*6$\O`$AZ`3TO+?_P&
  50. XM3KH=L$_O``P@;?_X+R@`5DZZ'-A83TAZ`5TO+?_X3KH%IE!/2JW_[&<*+RW_F
  51. XM[$ZZ'.I83TJM__1G#B\M__0O+?_X3KH)[%!/+RW_^$ZZ#$!83R\M__Q.N@^*$
  52. XM6$].NA.60J=.NAG.6$].74YU;F\@;&EB<S\*`&YO(&QI8G,_"@!%>DQI8B!$?
  53. XM96UO(%!R;V=R86T`=&]R;VYT;RYF;VYT`$5N=&5R(&$@<W1R:6YG(&AE<F4ZG
  54. XM`%1H:7,@:7,@82!D969A=6QT('-T<FEN9P!9;W4@='EP960@.@!9;W4@='EPH
  55. XM960@.@!$;VXG="!H879E(&$@8V]W(&1U9&4A`$5Z;&EB(&UA:V5S('!R;V=RA
  56. XM86UM:6YG(&9U;BX`17IL:6(@;6%K97,@<')O9W)A;6UI;F<@9G5N+@!#;&EC,
  57. XM:R!T:&4@8VQO<V4@9V%D9V5T('1O(&5X:70`0VQI8VL@=&AE(&-L;W-E(&=A0
  58. XM9&=E="!T;R!E>&ET`$)O>2!T:&ES('-U<F4@:7,@;F5A="!H=6@_`$Y5__PK3
  59. XM?````"C__"\M__Q(>``*+RT`"$ZZ&\1/[P`,(#P```#(D*W__"\`2'@";"\MJ
  60. XM``A.NAM@3^\`#'(0("W__$ZZ%]XO`"\M``A.NANB4$]2K?_\#*T```"@__QM.
  61. XMK"M\````%/_\+RW__$AX``HO+0`(3KH;:$_O``PO+?_\2'@";"\M``A.NAL,4
  62. XM3^\`#$AX``I(>``*+RW__$AX`38O+0`(3KH;`D_O`!1R$"`M__Q.NA=N+P`O\
  63. XM+0`(3KH;,E!/4JW__`RM````,O_\;9A.74YU("!/2R``0V%N8V5L``!.5?XZ7
  64. XM0JW^_"M\`````?Y"*WP`!`)`_CXK?``",`[^.DJM`!!G$"\M`!!(;?\!3KH22
  65. XM"E!/8`1"+?\!0>W^;$/L@.YP"B#94<C__$'M_IA#[("N<`H@V5'(__Q![?[$0
  66. XM0^R`2G`*(-E1R/_\0>W^2$/L@`)P""#94<C__$'M_D@K2/[F0>W^F"M(_FQ!7
  67. XM[?[$*TC^F#M\`5_^DCM\`6#^OCM\`6'^ZD'M_P$K2/Y(2'@`-TAX`3Q(>``N]
  68. XM2'@`E"\M_CXO+?XZ+RT`"$ZZ!VA/[P`<*T#^^$JM_OAF!G``3EU.=4AX__\OZ
  69. XM+0`,+RW^^$ZZ&X)/[P`,0J=(>``#2'@``4AM_FPO+?[X3KH:GD_O`!1"IR\MO
  70. XM_OA(;?YL3KH;'$_O``Q*K?Y"9P`!""!M_O@B:`!6<``0*0`/<@'AH2\!3KH9F
  71. XM+EA/2JW^0F<``.(@;?[X+R@`5DZZ&.183RM`_O1G``#,(&W^]"`H`!1@``"61
  72. XM(&W^]"MH`!S^\"!M_O!P`#`H`"9@3D*M_D)@6D*M_D)(;?\!3KH0N%A/4H`[$
  73. XM0/Y&#&T``?Y&9SY"IW``,"W^1B\`3KH83E!/*T#^_$JM_OQG)$AM_P$O+?[\)
  74. XM3KH0<E!/8!1@$I"\```!7V>J4X!GK%.`9ZA@[&`X0J<O+?[X2&W^Q$ZZ&9!/J
  75. XM[P`,8"1"K?Y"8!Y@')"\````0&<`_V20O````<!GYI"\``/^`&?*8.(O+?[TF
  76. XM3KH8.EA/8`#_&F``_O0O+?[X3KH9PEA/("W^_&``_IY.5?_B0?H`]BM(_^1"X
  77. XM+?_C#*P```!D@4ID$D*G2'H`Y$ZZ%^903RE`@4I@!AM\``'_XTJL@4IF!G``0
  78. XM3EU.=2\M``A.N@_&6$]<@"M`__!"IR\M__!.NA=H4$\K0/_L2JW_[&8$<`!@8
  79. XMTB\M``@O+?_L3KH/B%!/2'@`+B\M_^Q.N@]:4$\K0/_H2JW_Z&<2+RW_Y"\M$
  80. XM_^A.N@^$4$]*@&<.+RW_Y"\M_^Q.NA,N4$\K;?_L__0[;0`.__A"+?_Z&WP`P
  81. XM`O_[2&W_]$ZZ&7I83RM`__PO+?_P+RW_[$ZZ%PA03THM_^-F#B\L@4I.NA;"W
  82. XM6$]"K(%*("W__&``_T`N9F]N=`!D:7-K9F]N="YL:6)R87)Y``!.5?_L#*T`X
  83. XM``!D``AB!G``3EU.=4AY``$``$AX`#Q.NA:*4$\K0/_T2JW_]&8$<`!@WB!MD
  84. XM__31_````!0K2/_P(&W_]-'\````*"M(_^P@;?_L$7P``0`!(&W_\!%\``$`:
  85. XM`2!M__01?``!``$@;?_L$7P``0`"(&W_\!%\``$``B!M__01?``!``(@;?_TT
  86. XM,7P`"@`$(&W_]#%\``P`!B!M__0A;0`,``P@;?_P,7P``P`&(&W_\#%\``,`^
  87. XM!"!M__!#^@"*(4D`#"!M_^PQ?``#``8@;?_L,7P``P`$(&W_[$/Z`&\A20`,Q
  88. XM+RW_]$ZZ%]!83]"\````,BM`__@,K0```);_^&P(*WP```#A__A(>``Z+RW_3
  89. XM^$*G0J<O+?_L+RW_\"\M__0O+0`(3KH70$_O`"`K0/_\2'@`/"\M__1.NA60J
  90. XM4$\@+?_\8`#^QB!/2R``($-!3D-%3```3E7_[$*M__Q"K?_X0JW_]`@M``$`A
  91. XM$V<&<`!.74YU""T````39@8`;0```!)(>0`!``!(>``L3KH5&%!/*T#__$AYZ
  92. XM``$``$AX`!1.NA4$4$\K0/_X2'D``0``2'@`$$ZZ%/!03RM`__1*K?_T9Q1"Y
  93. XMITAX`!1.NA3:4$\@;?_T(4``"$JM__QG%DJM__AG$$JM__1G"B!M__1*J``(B
  94. XM9EY*K?_\9PY(>``L+RW__$ZZ%,A03TJM__AG#DAX`!0O+?_X3KH4M%!/2JW_@
  95. XM]&<J(&W_]$JH``AG$DAX`!0@;?_T+R@`"$ZZ%))03TAX`!`O+?_T3KH4A%!/6
  96. XM<`!@`/\@(&W__#%M``H`!"!M__PQ;0`.``8@;?_\,6T`$@`,(&W__#%M`!8`=
  97. XM#B!M__PQ;0`>`"8@;?_\,7P``0`0(&W__"%M__@`&B!M__PA;?_T`!(@;?_X$
  98. XM$+P``B!M__A"*``"(&W_^#%\``H`!"!M__@Q?``#``8@;?_X(6T`&``,(&W_Y
  99. XM]#"\__\@;?_T,7S__P`"(&W_]!%\``$`!"!M__1"*``%(&W_]$(H``8@;?_T\
  100. XM$7P`!0`'+RW_^$ZZ%:Y83]"\````%BM`__`,K0```![_\&P(*WP````>__`@H
  101. XM;(%"(F@`FG``,"D`%%R`*T#_["!M__0B:``(0E$@;?_T(F@`"$)I``(@;?_T&
  102. XM(F@`"#-M__(`!"!M__0B:``(0FD`!B!M__0B:``(,VW_\@`((&W_]")H``@S:
  103. XM;?_N``H@;?_T(F@`"$)I``P@;?_T(F@`"#-M_^X`#B!M__0B:``(0FD`$"!MT
  104. XM__0B:``(0FD`$B`M__!3@"!M__PQ0``(("W_[%.`(&W__#%```H@+?_\8`#]%
  105. XMD$Y5__A";?_^.WP``?_\<``P+0`:+P`O+0`4<``P+?_\+P!P`#`M__XO`#`M<
  106. XM`!)(P"\`,"T`#DC`+P!.NOTX3^\`&"M`__A*K?_X9@9P`$Y=3G5(>0``__\O&
  107. XM+?_X+RT`"$ZZ$_A/[P`,2'@``4*G+RT`""\M__A.NA283^\`$"`M__A@RDY59
  108. XM__PO+0`,+RT`"$ZZ%)903T*G+RT`""!M``@O*``^3KH45D_O``Q(>``4(&T`L
  109. XM#")H`!(O*0`(3KH2+%!/2'@`$"!M``PO*``23KH2&E!/2'@`%"!M``PO*``:P
  110. XM3KH2"%!/2'@`+"\M``Q.NA'Z4$].74YU3E7_]$JL@4)G!DJL@49F%$AX``-.Y
  111. XMN@686$]*@&8&<`!.74YU2'D``0``2'@`,$ZZ$9Q03RM`__A*K?_X9@1P`&#>`
  112. XM2JT`'&P.(&R!0G``,"@`VBM``!Q*K0`@;`@K?```!=P`("!M__@A;0`,``X@$
  113. XM;?_X(6T`$``*(&W_^#"M`!8@;?_X,6T`'@`$(&W_^#%M`!H``B!M__@Q;0`B)
  114. XM``8@;?_X,7P`/``F(&W_^#%\`!X`*"!M__@1?`#_``@@;?_X$7P`_P`)(&W_-
  115. XM^#%\``$`+B!M__@A;0`(`!Y*K0`(9V0@;?_X,7P`#P`N("T`%-"M`!P@;0`(3
  116. XM,B@`#$C!L(%O%B!M``@P*``,2,"0K0`4(&W_^#%```0@+0`8T*T`("!M``@RY
  117. XM*``.2,&P@6\6(&T`"#`H``Y(P)"M`!@@;?_X,4``!F!@("T`%-"M`!P@;(%"1
  118. XM<@`R*`#:L(%C%B!L@4)P`#`H`-J0K0`4(&W_^#%```1A5E*`(&R!0G(`,B@`O
  119. XMV$ZZ#Y@K0/_\("T`&-"M`""PK?_\;Q`@+?_\D*T`&"!M__@Q0``&+RW_^$ZZY
  120. XM$DY83RM`__1(>``P+RW_^$ZZ$#903R`M__1@`/Y:3E7_&$AX`.A(;?\83KH14
  121. XM^E!/2BW_T6<&<`%.74YU<`!@^$Y5``!(YP`P)&T`"+7\````9&0(3-\,`$Y=R
  122. XM3G5*J@`<9P@O"DZZ$9Q83TJJ`%9G&B\J`%9.N@_F6$\F0$J`9PHO"TZZ#_Q8[
  123. XM3V#@+PI.NA&,6$]@P$Y5```O+0`8+RT`%"\M`!`O+0`,+RR!&B\L@1XO+0`(C
  124. XM3KK]H$_O`!Q.74YU3E7_W$CG#``H+0`(*BT`#$JL@4)G!DJL@49F&$AX``-.8
  125. XMN@,B6$]*@&8*<`!,WP`P3EU.=4'M_]Q#[($B<`<@V5'(__P[1/_H"`0`#V<&&
  126. XM.WP"@/_@"`0``F<0(&R!0C`H`-CC0#M`_^)@"B!L@4([:`#8_^*ZO`````1O9
  127. XM"`@$``]G`GH$2H5N`GH!"`0`"V<(>@8[?`%`_^`(!``'9PAZ!CM\`4#_X+J\P
  128. XM````!F\">@8[1?_DNKP````";RXP+?_B2,`O`#`M_^!(P"\`+P5A2$_O``PKI
  129. XM0/_X2JW_^&8&<`!@`/]*".T`!O_K2&W_W$ZZ$))83RM`__Q*K?_\9Q*ZO```W
  130. XM``)O"B!M__PA;?_X`5(@+?_\8`#_%DY5```O"@RM````"``(;PAP`"1?3EU.@
  131. XM=4AY``$``$AX`"A.N@XF4$\D0"`*9@1P`&#@+RT`$"\M``PO+0`(+PI.N@[T=
  132. XM3^\`$"\M`!`O+0`,+PIA$$_O``Q*@&8$<`!@LB`*8*Y.50``2.<,("1M``@Z5
  133. XM*@`"RM)X`&```)`O+0`0+RT`#$ZZ#DY03R($Y8$@0='*(4``""`$Y8`@0-'*\
  134. XM2J@`"&8X2'H`ETZZ!>Q83R\`2'H`:$ZZ#3XO`$ZZ#51/[P`,+RT`$"\M``POB
  135. XM"DZZ`))/[P`,3-\$,$Y=3G5(>``!<@@@+0`,3KH*?"(M`!!.N@RF+P`@!.6`N
  136. XM($#1RB\H``A.N@W@3^\`#%*$<``0*@`%N(!E`/]H<`%@NDYO(&UE;2!F;W(@0
  137. XM0FET36%P(&1A=&$N("!%>&ET:6YG+@H`3F\@;65M(&9O<B!":71-87`@9&%TN
  138. XM82X@($5X:71I;F<N"@!.50``2.<(("1M``AX`&`>+RT`$"\M``P@!.6`($#1V
  139. XMRB\H``A.N@V>3^\`#%*$(`3E@"!`T<I*J``(9PIP`!`J``6X@&7*2'@`*"\*B
  140. XM3KH,PE!/<`!,WP003EU.=4Y5__A(YP`P)&T`")?+M?P```!D9`A,WPP`3EU.W
  141. XM=4JJ``1G#$AX`#).N@OL6$]@[@PJ``(`O6,8)FH!4C`J``Q(P"M`__PP*@`.5
  142. XM2,`K0/_X+PI.N@XF6$\@"V<2+RW_^"\M__PO"TZZ_SQ/[P`,8*9.50``2.<,_
  143. XM`"@M``AZ``@$``!G,D*G2'H!7DZZ#$Q03RE`@4)F($AZ`75.N@0^6$\O`$AZ1
  144. XM`5-.N@N0+P!.N@NF3^\`#'H!"`0``6<R0J=(>@%C3KH,%%!/*4"!1F8@2'H!9
  145. XM?$ZZ!`983R\`2'H!64ZZ"U@O`$ZZ"VY/[P`,>@$(!``"9S1(>``B2'H!:4ZZ?
  146. XM"]I03RE`@4YF($AZ`8U.N@/,6$\O`$AZ`5E.N@L>+P!.N@LT3^\`#'H!"`0`3
  147. XM`V<R0J=(>@&-3KH+HE!/*4"!2F8@2'H!O$ZZ`Y183R\`2'H!@DZZ"N8O`$ZZ+
  148. XM"OQ/[P`,>@$(!``$9S)"ITAZ`<).N@MJ4$\I0(%29B!(>@'U3KH#7%A/+P!(]
  149. XM>@&Y3KH*KB\`3KH*Q$_O``QZ`0@$``AG,D*G2'H!_4ZZ"S)03RE`@59F($AZ`
  150. XM`C!.N@,D6$\O`$AZ`?1.N@IV+P!.N@J,3^\`#'H!2H5G#DZZ`CQP`$S?`#!.K
  151. XM74YU<`%@]&=R87!H:6-S+FQI8G)A<GD`3F\@1W)A<&AI8W,N;&EB<F%R>2X*"
  152. XM`$YO($=R87!H:6-S+FQI8G)A<GDN"@!I;G1U:71I;VXN;&EB<F%R>0!.;R!)5
  153. XM;G1U:71I;VXN;&EB<F%R>2X*`$YO($EN='5I=&EO;BYL:6)R87)Y+@H`87)P3
  154. XM+FQI8G)A<GD`3F\@07)P+FQI8G)A<GD@:6X@>6]U<B!,24)3(&1I<F5C=&]RR
  155. XM>2X*`$YO($%R<"YL:6)R87)Y(&EN('EO=7(@3$E"4R!D:7)E8W1O<GDN"@!D5
  156. XM:7-K9F]N="YL:6)R87)Y`$YO($1I<VMF;VYT+FQI8G)A<GD@:6X@>6]U<B!,U
  157. XM24)3.B!D:7)E8W1O<GDN"@!.;R!$:7-K9F]N="YL:6)R87)Y(&EN('EO=7(@-
  158. XM3$E"4SH@9&ER96-T;W)Y+@H`=')A;G-L871O<BYL:6)R87)Y`$YO(%1R86YSC
  159. XM;&%T;W(N;&EB<F%R>2!I;B!Y;W5R($Q)0E,Z(&1I<F5C=&]R>2X*`$YO(%1R_
  160. XM86YS;&%T;W(N;&EB<F%R>2!I;B!Y;W5R($Q)0E,Z(&1I<F5C=&]R>2X*`')EU
  161. XM>'AS>7-L:6(N;&EB<F%R>0!.;R!R97AX<WES;&EB+FQI8G)A<GD@:6X@>6]UZ
  162. XM<B!,24)3.B!D:7)E8W1O<GDN"@!.;R!R97AX<WES;&EB+FQI8G)A<GD@:6X@7
  163. XM>6]U<B!,24)3.B!D:7)E8W1O<GDN"@!.50``#*P```!D@4IC#B\L@4I.N@A8)
  164. XM6$]"K(%*#*P```!D@4YC#B\L@4Y.N@A`6$]"K(%.#*P```!D@49C#B\L@49.>
  165. XMN@@H6$]"K(%&#*P```!D@4)C#B\L@4).N@@06$]"K(%"#*P```!D@5)C#B\LG
  166. XM@5).N@?X6$]"K(%2#*P```!D@59C#B\L@59.N@?@6$]"K(%63EU.=2!O``0B6
  167. XM2$H89OQ3B!`O``NSR&<(L"!F^"`(3G5P`$YU(&\`!"`((F\`"!#99OQ.=2!O8
  168. XM``0@"$H89OR1P"`(4X!.=3`\?_]@!#`O``Y30&L4(&\`!")O``BQ"68,4TA*)
  169. XM&%?(__9P`$YU8P1P`4YU</].=6%P0^R!9D7L@6:UR68.,CP`%&L(=``BPE')$
  170. XM__PI3X%F+'@`!"E.@6I(YX"`""X`!`$I9Q!+^@`(3J[_XF`&0J?S7TYS0_H`W
  171. XM($ZN_F@I0(%N9@PN/``#@`=.KO^48`1.N@`:4$].=61O<RYL:6)R87)Y`$GYB
  172. XM``!__DYU3E4``"\*2'D``0``,"R!6L'\``8O`$ZZ!N0I0(%R4$]F%$*G2'D`8
  173. XM`0``3KH&I%!/+FR!9DYU(&R!<D)H``0@;(%R,7P``0`0(&R!<C%\``$`"B!L#
  174. XM@68@+(%FD*@`!%"`*4"!=B!L@78@O$U!3EA"ITZZ!I@D0$JJ`*Q83V<P+RT`&
  175. XM#"\M``@O"DZZ`+(I?`````&!>B!L@7(`:(````0@;(%R`&B````*3^\`#&!",
  176. XM2&H`7$ZZ!L)(:@!<3KH&>BE`@7X@;(%^2J@`)%!/9Q`@;(%^(F@`)"\13KH%9
  177. XMFEA/+RR!?B\*3KH">"EL@7Z!@E!/3KH%FB!L@7(@@$ZZ!:H@;(%R(4``!F<6L
  178. XM2'@#[4AZ`"Q.N@6"(&R!<B%```Q03R\L@8(O+(&&3KKFO$*G3KH#C$_O``PD0
  179. XM7TY=3G4J`$Y5``!(YPPP)&T`$"!M``A*J`"L9Q@@;0`(("@`K.6`*``@1"`H:
  180. XM`!#E@"9`8`0F;(%<$!-(@$C`T*T`#%2`*4"!BD*G+RR!BDZZ!78I0(&.4$]F!
  181. XM"$S?##!.74YU$!-(@$C`*@`O!2!+4H@O""\L@8Y.N@&.(&R!CM'%0_H!6!#9;
  182. XM9OPO+0`,+PHO+(&.3KH!3B!L@8Y",%@`*7P````!@88@;(&.T<4F2%*+)$M/0
  183. XM[P`8$!-(@$C`*@"PO````"!G(+J\````"6<8NKP````,9Q"ZO`````UG"+J\6
  184. XM````"F8$4HM@S`P3`"!M``",#!,`(F8R4HL@2U*+$!!(@$C`*@!G("!*4HH0J
  185. XMA;J\````(F80#!,`(F8$4HM@!D(J__]@`F#28$0@2U*+$!!(@$C`*@!G,+J\2
  186. XM````(&<HNKP````)9R"ZO`````QG&+J\````#6<0NKP````*9P@@2E**$(5@:
  187. XMPB!*4HI"$$J%9@)3BU*L@89@`/\\0A)"IR`L@892@.6`+P!.N@0Z*4"!@E!/6
  188. XM9@A"K(&&8`#^OGH`)FR!CF`>(`7E@"!L@8(ABP@`($L@"$H89OR1P%.(4HC79
  189. XMR%*%NJR!AFW<(`7E@"!L@8)"L`@`8`#^@B``,#Q__V`$,"\`#B!O``1*&&;\Z
  190. XM4T@B;P`(4T`0V5?(__QG`D(0("\`!$YU3.\#```$(`@B+P`,8`(0V5?)__QGO
  191. XM!E)!8`)"&%')__Q.=4Y5``!(YPXP)&T`"$*G2'H`CDZZ`]0I0(&24$]F"$S?B
  192. XM#'!.74YU(&T`#")H`"0O*0`$3KH$W"@`6$]G4DAZ`&T@1"\H`#9.N@2N)D!*'
  193. XM@%!/9S1(>`/M+PM.N@+<+`!03V<D(`;E@"H`($4E:``(`*0E1@"<2'@#[4AZL
  194. XM`#A.N@*X)4``H%!/+P1.N@1Z6$\O+(&23KH"]D*L@9)83V"`:6-O;BYL:6)RT
  195. XM87)Y`%=)3D1/5P`J`$CG2`!"A$J`:@1$@%)$2H%J!D2!"D0``6$^2D1G`D2`&
  196. XM3-\`$DJ`3G5(YT@`0H1*@&H$1(!21$J!:@)$@6$:(`%@V"\!81(@`2(?2H!.&
  197. XM=2\!808B'TJ`3G5(YS``2$%*068@2$$V`30`0D!(0(##(@!(0#("@L,P`4)!K
  198. XM2$%,WP`,3G5(028!(@!"04A!2$!"0'0/T(#3@;:!8@22@U)`4<K_\DS?``Q.G
  199. XM=4Y5``!*K(&69P8@;(&63I`O+0`(3KH`"%A/3EU.=4Y5__PO!"MM``C__$JL^
  200. XM@7)G+'@`8`HO!$ZZ`/Q83U*$,"R!6DC`N(!M[#`L@5K!_``&+P`O+(%R3KH"M
  201. XM$%!/2JR!FF<&(&R!FDZ02JR!8&<*+RR!8$ZZ`8!83TJL@9YG""!L@9X@K(&B$
  202. XM2JR!IF<*+RR!IDZZ`:!83TJL@:IG"B\L@:I.N@&06$]*K(&N9PHO+(&N3KH!A
  203. XM@%A/2JR!LF<*+RR!LDZZ`7!83RQX``0(+@`$`2EG%"\-2_H`"DZN_^(J7V`&-
  204. XM0J?S7TYS2JR!?F8J2JR!CF<B+RR!BB\L@8Y.N@%L("R!AE*`Y8`O`"\L@8).Y
  205. XMN@%:3^\`$&`.3KH!1"\L@7Y.N@&`6$\@+?_\+FR!9DYU*!].74YU3E4``$CG[
  206. XM#B`H+0`(<@8@!$ZZ`$0D0-7L@7)*A&T.,"R!6DC`N(!L!$J29A(I?`````*!W
  207. XMMG#_3-\$<$Y=3G4P*@`$P'R``&8(+Q).N@`N6$]"DG``8.!(YW``-`'$P"8!;
  208. XM2$/&P$A#0D/4@TA`P,%(0$)`T(),WP`.3G4B+P`$+&R!;D[N_]PB+P`$+&R!Z
  209. XM;D[N_X(B+P`$+&R!;D[N_SHL;(%N3N[_RDSO``8`!"QL@6Y.[O_B3OH``BQL3
  210. XM@6Y.[O_$3OH``B(O``0L;(%N3N[_ID[Z``),[P`.``0L;(%N3N[_T$CG`01,>
  211. XM[R"```PL;(%J3J[_E$S?((!.=4[Z``(B;P`$+&R!:D[N_F).^@`"3.\``P`$%
  212. XM+&R!:D[N_SHB;P`$+&R!:D[N_MHL;(%J3N[_?$[Z``(B;P`$("\`""QL@6I.E
  213. XM[O\N3OH``B!O``0L;(%J3N[^C$[Z``(L;(%J(F\`!"`O``A.[OW83OH``B)OF
  214. XM``0L;(%J3N[^AB`O``0L;(%J3N[^PD[Z``(@;P`$+&R!:D[N_H!,[P`#``0LA
  215. XM;(%"3N[^%")O``1,[P`#``@L;(%"3N[^U")O``0L;(%"3N[_LB)O``1,[P`#Q
  216. XM``@L;(%"3N[_"B)O``1,[P`/``@L;(%"3N[_3"!O``1,[P`#``@L;(%"3N[^?
  217. XM#B!O``1,[P`'``@L;(%"3N[^>B)O``1,[P`#``@L;(%"3N[_$")O``0@+P`(G
  218. XM+&R!0D[N_JHB;P`$(&\`""QL@4).[O^^(&\`!$SO``\`""QL@4).[O[@(F\`J
  219. XM!"!O``@@+P`,+&R!0B\'3J[_Q"X?3G5,[P,```0L;(&23N[_H"!O``0L;(&2<
  220. XM3N[_IB!O``0L;(&23N[_LB\*3.\'```(+&R!1DZN_C(D7TYU3.\#```$("\`Q
  221. XM#"QL@49.[O_6+PI,[P,```A,[P0#`!`L;(%&3J[^2B1?3G5(YP`P3.\/```,K
  222. XM3.\`#P`<+&R!1DZN_J1,WPP`3G4@;P`$+&R!1D[N_\H@;P`$+&R!1D[N_[X@?
  223. XM;P`$+&R!1D[N_[@@;P`$("\`""QL@49.[O]\(&\`!"QL@49.[OZV(&\`!"QL2
  224. XM@49.[O\Z(&\`!"QL@49.[O\T+PI,[P<```@L;(%&3J[_(B1?3G4O"DSO!P``=
  225. XM""`O`!0L;(%&3J[^4"1?3G5,[P,```0L;(%&3N[_'"\*3.\'```(+&R!1DZNP
  226. XM_NPD7TYU(&\`!"QL@4I.[O_B``````/L`````0````$``!@:`````````_(`;
  227. XM``/J````60``````````````_P``````````````````````````````````%
  228. XM```!)````20`"P````L`````__[__@,```4````D````````````#0`2`2,`)
  229. XM"@```($`!````#@```````````````````````````````````!+````2P`+H
  230. XM````"P````#_____`P``!0```'0``````P`````*``$````````%#```````B
  231. XM`````.8`*`!*``H````!``$```"(`````````)@```````````````````,`'
  232. XM````"@`!````````!1(````````````*`"@`2@`*`````0`!````B```````R
  233. XM``#8``````````````````````(```(0#P`````!0`#(``$``0```0\`````6
  234. XM`````````````````````````````````````````````````!0`````````4
  235. XM```````#[`````<````!````0````%H```"0````O@```,8```#^```!!@``J
  236. XB``(`````````I````.0````````#\@```^L````!```#\L8`I
  237. X``
  238. Xend
  239. Xsize 9124
  240. END_OF_FILE
  241. if test 12809 -ne `wc -c <'Demo.uu'`; then
  242.     echo shar: \"'Demo.uu'\" unpacked with wrong size!
  243. fi
  244. # end of 'Demo.uu'
  245. fi
  246. if test -f 'doc/README' -a "${1}" != "-c" ; then 
  247.   echo shar: Will not clobber existing file \"'doc/README'\"
  248. else
  249. echo shar: Extracting \"'doc/README'\" \(9286 characters\)
  250. sed "s/^X//" >'doc/README' <<'END_OF_FILE'
  251. X
  252. X                Ez.lib and Ezlib.h
  253. X      - two things that will make your programming life easier -
  254. X
  255. X                  by
  256. X               Dominic Giampaolo
  257. X
  258. X
  259. X
  260. X1. Introduction
  261. X
  262. X    I have recently started into heavily programming the Amiga.  Since
  263. Xthen, I've noticed that at times it can be *very* difficult to even get
  264. Xsimple things done.  To that end I have started working on Ez.lib.
  265. X
  266. X    Ez.lib is a link time library which has high level functions to
  267. Xaccomplish many of the mundane tasks of writing an "Amiga" program.
  268. X
  269. X    The Ezlib functions have been designed to simplify the normal process
  270. Xof creating windows, gadgets, screens and other things.  This is my first
  271. Xstab, but for the moment it serves my purposes quite well.  Hopefully it
  272. Xwill do the same for you.
  273. X
  274. X    Using Ez.lib is also straightforward.  You simply #include <ezlib.h> in
  275. Xyour program, and link with ez.lib.  That's it!
  276. X
  277. X
  278. X-----------------------------------------------------------------------
  279. X
  280. X
  281. X2.  What's included?
  282. X
  283. X    There are routines to open screens, gadgets, windows, get string input,
  284. Xget yes or no answers, use disk fonts, open libraries, and of course
  285. Xclosing all that stuff down.  Now when I say "opening screens and windows",
  286. XI mean it - you'll see (read: no silly structures to painstakingly fill
  287. Xout).
  288. X
  289. X    Probably the nicest function (IMHO) is the makescreen() call.  Here is
  290. Xall you need to do to open a HiRes, Interlaced, 3 bitplane screen:
  291. X
  292. X
  293. X            struct Screen *screen;
  294. X
  295. X            screen = makescreen(HIRES|LACE, 3);
  296. X            if (screen == NULL)
  297. X              no_screen();
  298. X
  299. X
  300. X    That's it.  *Everything* is handled with a single function call.  You
  301. Xsimply specify the modes you would like and the depth, then presto.
  302. X
  303. X    Compare this to what would normally be required.  Notice you didn't
  304. Xeven have to bother opening grahics.library or intuition.library!  The
  305. Xmakescreen() call checks those trivial things and covers your butt.
  306. X
  307. X    Of course it wouldn't be nice if you had to go through the rigamorole
  308. Xof closing and freeing all that stuff.    To that end, killscreen() takes
  309. Xcare of you, and with a single call, everything is properly deallocated and
  310. Xclosed down.
  311. X
  312. X
  313. X    Now the first thing most people will say is, yeah great that's really
  314. Xnice, but what about { performance | size }?
  315. X
  316. X    Performance really isn't an issue with these calls as you don't sit in
  317. Xa loop creating custom screens (at least I don't ;-).  And if it really
  318. Xdoes matter, the code simply has a few if/then combinations to make sure
  319. Xyou get a valid screen.  Certainly nothing computationally intensive.
  320. X
  321. X    Size wise, the extra code for checking various parameters doesn't
  322. Xamount to a hill of beans.  A demo program I wrote that uses *every*
  323. Xfunction in the library is still less than 9K - it accomplishes a fair
  324. Xamount too, and is one helluva lot easier to understand!
  325. X
  326. X
  327. X-----------------------------------------------------------------------
  328. X
  329. X
  330. X3.  Let's go over roughly what is in Ez.lib
  331. X
  332. X    These are short descriptions of what each function does.  The complete
  333. X    docs for each function are in the doc directory.
  334. X
  335. X      Function Name           What it does
  336. X      -------------           ------------
  337. X
  338. X    openlibs(which_ones)      Open the specified libraries.  Which
  339. X                  libraries are opened depends on the
  340. X                  argument you specify.  Can easily open
  341. X                  multiple libraries at once, error
  342. X                  checking each as it goes along.
  343. X
  344. X
  345. X    makescreen(modes, depth)      Opens a screen of said modes and depth
  346. X                  allocates any necessary bitmaps, etc...
  347. X                  Can handle any Amiga screen mode and
  348. X                  depth (not overscan though).
  349. X
  350. X
  351. X    makewindow(screen,            Open a standard Intuition window with all
  352. X           l_edge, t_edge,      the trimmings.  Put it at l_edge (left
  353. X           width, height)      edge), t_edge (top edge) and give it
  354. X                  width and height for dimensions.  If
  355. X                  screen is non null, open it there.
  356. X
  357. X
  358. X  makeboolgadget(win,             Create and add to your window an auto-
  359. X         l_edge, t_edge,  sized boxed boolean gadget.  The top
  360. X         text, id)      corner will be as specified and the width
  361. X                  and height are figured dynamically.  The
  362. X                  string will be centered in the gadget.
  363. X
  364. X
  365. X    getstring(screen,             Pop up a window with a string gadget to
  366. X          title, default)      get input from the user.  The window will
  367. X                  have the given title, and you may give
  368. X                  a default string to place in the string
  369. X                  gadget.
  370. X
  371. X
  372. X    getyn(window, string)         Use an AutoRequest() to get a yes or no
  373. X                  answer from the user.  The string you
  374. X                  specify is put in the requestor.
  375. X
  376. X
  377. X     getfont(name, size)          Open a disk based font for use in a
  378. X                  window or screen.  You specify the name
  379. X                  of the font and its size, and the rest is
  380. X                  taken care of.
  381. X
  382. X
  383. X    There are also functions to close down/deallocate the items you open
  384. Xwith these calls.  You are not required to use the "kill" routines, but
  385. Xthey are guaranteed to be safe, and will free any previously allocated
  386. Xmemory and generally be smart about closing down.
  387. X
  388. X    In addition there are a few lower level calls that give more
  389. Xflexibility in the objects they create.  This is at the expense of a
  390. Xparameter or two extra which you must specify in the function call.  There
  391. Xare also two low level bitmap allocation/de-allocation routines.
  392. X
  393. X-------------------------------------------------------------------------
  394. X
  395. X4.  General
  396. X
  397. X    These functions certainly don't cover everything you will ever need to
  398. Xdo on the Amiga, but they do make many things easier.  For example, you can
  399. Xnow try out the graphics in your Amiga without having to worry about all
  400. Xthe nitty gritty details.
  401. X
  402. X    As a similar example, I wanted to write a program to draw Lissajous
  403. Xcurves.  First I was daunted by having to drag out the RKM's and start
  404. Xgoing through the NewScreen structure, etc.  Now I simply call makescreen()
  405. Xonce and I'm ready to start drawing the curves!  The entire source to draw
  406. Xthe curves is now less than 1.4K - and the bulk of that is simply setting
  407. Xup tables to make the calculations faster.  The executable is around 6K.
  408. X
  409. X    Using the getstring() function you can even create simple
  410. XIntuition'ized programs without any more effort than it would take to call
  411. Xthe same character/line oriented function (gets() or similar).
  412. X
  413. X    And with the ability to trivially create boolean gadgets, what more can
  414. Xyou ask for?  A completely Intuitioniz'ed calculator program could be
  415. Xcreated without much effort at all.
  416. X
  417. X    As you can see, the functionality in Ez.lib will definately make many
  418. Xprograms easier to write and debug.  You don't have to worry about making
  419. Xsure you properly allocated the bitplanes you needed, or making sure you
  420. Xdid it right.  Instead, you concentrate on your code, knowing that the
  421. XEz.lib functions will cover the rest.
  422. X
  423. X----------------------------------------------------------------------
  424. X
  425. X
  426. X5.  Any thing else?
  427. X
  428. X    Well, the real docs for all these functions are in the individual
  429. Xfiles in the doc directory.  The return values and methods for calling them
  430. Xare also documented there.  In addition, there are code fragments in the
  431. Xdocumentation that directly show the complete calling sequence for these
  432. Xfunctions.  Hopefully, using these functions is straightforward.
  433. X
  434. X    I will probably continue to add functionality to the library as needed.
  435. XI'd like to cover a lot more things (mainly other types of gadgets), but
  436. Xfor now the library is sufficient to be usable.
  437. X
  438. X    I'd like to thank Dan Drake and Bob Koon for both listening to me
  439. Xbabble about this library and for giving me some good input.  Thanks guys.
  440. X
  441. X    Finally I'd like to give credit to the _Amiga Transactor_ (god rest
  442. Xits soul :) for having had excellent articles from which I learned plenty
  443. X(and from which some of this code came from!).  In addition, I would like
  444. Xto thank the many nameless folks who have distributed public domain source
  445. Xcode for doing various things on the Amiga.  I've learned a lot from that
  446. Xcode - thanks.    And finally the folks at Commodore who wrote the RKM's, if
  447. Xit wasn't for them, I'd still just be using WorkBench ;^)
  448. X
  449. X
  450. X    If you are interested in contacting me about bugs, problems, or
  451. Xquestions about EzLib, you can reach me in the following ways:
  452. X
  453. X
  454. X     E-mail :   nick@chopin.uunet.uu.net  OR giampal@auvm.bitnet
  455. X
  456. X     SNail Mail :   Dominic Giampaolo
  457. X            4201 Mass. Ave.
  458. X            Apt# 8067 West
  459. X            Washington, D.C. 20016
  460. X
  461. X    Of course I'd really like to hear back from you if you have anything
  462. X(good or bad ;^) to say about these routines.
  463. X
  464. X    Oh one final thing.  This code is totally free for you to do whatever
  465. Xyou want with - excluding selling it for outrageous prices, saying that you
  466. Xwrote it, or any other generally evil things.  Essentially this is in the
  467. Xspirit of GNU - code for anyone to use and learn from (however this code is
  468. Xnot under the GPL).
  469. X
  470. X--dominic
  471. X08/09/90
  472. X
  473. X************************************************************************
  474. X
  475. X NOTE: The library that is included in the distribution is for Manx 3.6.
  476. X       If you use Manx 5.0 or Lattice, you WILL have to recompile the
  477. X       source and make library from the object files.  I don't know
  478. X       Lattice, but I have included a Makefile for Manx, and it shouldn't
  479. X       be too hard to do for Lattice.
  480. X
  481. X************************************************************************
  482. X
  483. X
  484. END_OF_FILE
  485. if test 9286 -ne `wc -c <'doc/README'`; then
  486.     echo shar: \"'doc/README'\" unpacked with wrong size!
  487. fi
  488. # end of 'doc/README'
  489. fi
  490. if test -f 'ez.lib.uu' -a "${1}" != "-c" ; then 
  491.   echo shar: Will not clobber existing file \"'ez.lib.uu'\"
  492. else
  493. echo shar: Extracting \"'ez.lib.uu'\" \(13756 characters\)
  494. sed "s/^X//" >'ez.lib.uu' <<'END_OF_FILE'
  495. Xbegin 644 ez.lib
  496. XM86H````"7V5Z7W-T<FEN9U]G861G971?4TEN9F\```)?97I?0F]R9&5R5F5CE
  497. XM=&]R<S$```)?97I?0F]R9&5R,0```E]E>E]S=')I;F=?9V%D9V5T7V=L;V)A,
  498. XM;````E]E>E]";W)D97)696-T;W)S,@```E]E>E]";W)D97(R```"7V5Z7TE4L
  499. XM97AT```"7V5Z7V]K7V=A9&=E=%]G;&]B86P```)?97I?251E>'0R```"7V5ZD
  500. XM7V-A;F-E;%]G861G971?9VQO8F%L```"7V=E='-T<FEN9P!N`U]G971F;VYT?
  501. XM`/<#7V=E='EN`'8$7V-R96%T95]B;V]L9V%D9V5T`'8$7VUA:V5B;V]L9V%D3
  502. XM9V5T`'8$7VMI;&QG861G970`J05?8W)E871E=VEN9&]W`*D%7VQA8V5D7W=B(
  503. XM`*D%7VMI;&QW:6YD;W<`J05?;6%K97=I;F1O=P"D!E]M86ME<V-R965N`*0&E
  504. XM7V=E=&)I=&UA<`"D!E]G971?<F%S=&5R<P"D!E]F<F5E7V)I=&UA<`"D!E]K#
  505. XM:6QL<V-R965N`/@'7T=F>$)A<V4`^`=?26YT=6ET:6]N0F%S90#X!U]$:7-K$
  506. XM9F]N=$)A<V4`^`=?07)P0F%S90#X!U]4<F%N<VQA=&]R0F%S90#X!U]297AXV
  507. XM4WES0F%S90#X!U]O<&5N;&EB<P#X!U]C;&]S96QI8G,`````````````````2
  508. XM`````````````````````````````````````````````````````````````
  509. XM`````````````````````````````````````````````````````````````
  510. XM`````````````````````````````````````````````````````````````
  511. XM`````````````````````````````````````````````````````````````
  512. XM`````````````````````````````````````````````````````````````
  513. XM`````````````````````````````````````````````````````````````
  514. XM`````````````````````````````````````````````````````````````
  515. XM`````````````````````````````````````````````````````````````
  516. XM`````````````````````````````````````````````````````````````
  517. XM`````````````````````````````````````````````````````````````
  518. XM`````````````````````````````````````````````````````````````
  519. XM`````````````````````````````````````````````````````````````
  520. XM`````````````````````````````````````````````````````````````
  521. XM`````````````````````````````````````````````````````````````
  522. XM`````````````````````````````````````````````````````````````
  523. XM`````````````````````````````````````````````````````````````
  524. XM`````````````````````````````````````````````````````````````
  525. XM`````````````````````````````````````````````````````````````
  526. XM`````````````````````````````````````````````````````````````
  527. XM`````````````````````````````````````````````````````````````
  528. XM`````````````````````````````````````````````````````````````
  529. XM`````````````````````````````````````````````````````````````
  530. XM`````````````````````````````````````````````````````````````
  531. XM`````````````````````````````````````````````````````````````
  532. XM`````````````````````````````````````````````````````````````
  533. XM`````````````````````````````````````````````````````````````
  534. XM`````````````````````````````````````````````````````````````
  535. XM`````````````````````````````````````````````````````````````
  536. XM`````````````````````````````````````````````````````````````
  537. XM`````````````````````````````````````````````````````````````
  538. XM`````````````````````````````````````````````````````````````
  539. XM`````````````````````````````````````````````````````````````
  540. XM`````````````````````````````````````````````````````````````
  541. XM``````````````````````````````!!2F=E='-T<FEN```"3@```1@`````D
  542. XM`!@``@!Z``D`=P%NP``#"@``7V5Z7W-T<FEN9U]G861G971?4TEN9F\``RH`Z
  543. XM)``!7V5Z7T)O<F1E<E9E8W1O<G,Q``,J`#@``5]E>E]";W)D97(Q``,*`$A?]
  544. XM97I?<W1R:6YG7V=A9&=E=%]G;&]B86P``RH`=``!7V5Z7T)O<F1E<E9E8W1O.
  545. XM<G,R``,J`(@``E]E>E]";W)D97(R``,J`)@``5]E>E])5&5X=``#"@"L7V5Z#
  546. XM7V]K7V=A9&=E=%]G;&]B86P``RH`V``!7V5Z7TE497AT,@`#"@#L7V5Z7V-AQ
  547. XM;F-E;%]G861G971?9VQO8F%L``((``Y?9V5T<W1R:6YG``<(``!?<W1R8W!Y>
  548. XM``<(``!?8W)E871E=VEN9&]W``<(``!?4V5T5VEN9&]W5&ET;&5S``<(``!?O
  549. XM061D1TQI<W0`!P@``%]2969R97-H1V%D9V5T<P`'"```7U=A:70`!P@``%]'@
  550. XM971-<V<`!P@``%]S=')L96X`!P@``%]!;&QO8TUE;0`'"```7T%C=&EV871E=
  551. XM1V%D9V5T``<(``!?4F5P;'E-<V<`!P@``%]#;&]S95=I;F1O=P`'"```+F)E-
  552. XM9VEN``*@`````0*@``8``?4?``````````````#_`````!\`````````````\
  553. XM````````$P````#T]1\``````20```$D``L````+$P````#T]1?__O_^`P``+
  554. XM!?UQ`!,`````]/4?```````-`!(!(P`*````@1$`!/UR`!\`````````````_
  555. XM````````%0```````/3U'P``````2P```$L`"P````L3`````/3U%_____\#;
  556. XM```%_70`$P````#T]1L#``````H``0````#](6``,!,`````]!4@($]+(`#U4
  557. XM'P``````Y@`H`$H`"@````$1``']=0`3`````/UV`!T`````````````````I
  558. XM`/3U&P,`````"@`!`````/TA80`P$P````#T%T-A;F-E;```]1\```````H`#
  559. XM*`!*``H````!$0`!_74`$P````#]>``=``````````````````#T'TY5_CI"6
  560. XMK?[\*WP````!_D(?*WP`!`)`_CXK?``",`[^.A]*K0`09Q`O+0`02&W_`4ZZ\
  561. XM^GL`'5!/8`1"+?\!0>W^;$/Z^GD`'7`*(-E1R/_\0>W^F$/Z^G<`'7`*(-E1#
  562. XMR/_\0>W^Q$/Z^G,`'7`*(-E1R/_\0>W^2$/Z^G``'W`((-E1R/_\0>W^2"M(G
  563. XM_N8?0>W^F"M(_FQ![?[$*TC^F!\[?`%?_I([?`%@_KX[?`%A'_[J0>W_`2M(X
  564. XM_DA(>``W2'@?`3Q(>``N2'@`E"\M_CXO+1?^.B\M``A.NOI\`!]/[P`<*T#^B
  565. XM^$JM_OAF!G``'TY=3G5(>/__+RT`#"\M_O@13KKZ?0`?3^\`#$*G2'@``TAXK
  566. XM``%(;1?^;"\M_OA.NOI^`!]/[P`40J<O+?[X2&W^;$ZZ^G\`'T_O``Q*K?Y"U
  567. XM9P`!""!M_O@?(F@`5G``$"D`#W(!X:$O`1%.NOIP`1]83TJM_D)G``#B(&W^D
  568. XM^"\H$P!63KKZ<0$?6$\K0/[T9P``S"!M_O0@*!\`%&```)8@;?[T*V@`'/[P.
  569. XM'R!M_O!P`#`H`"9@3D*M_D(;8%I"K?Y"2&W_`4ZZ^G(!'UA/4H`[0/Y&#&T`C
  570. XM`?Y&9SX;0J=P`#`M_D8O`$ZZ^G,!'U!/*T#^_$JM_OQG)$AM_P$5+RW^_$ZZK
  571. XM^GL`'U!/8!1@$I"\```!7V>J4X`?9ZQ3@&>H8.Q@.$*G+RW^^!5(;?[$3KKZJ
  572. XM=`$?3^\`#&`D0JW^0F`>8!R0O!\```!`9P#_9)"\```!P&?F'Y"\``/^`&?*W
  573. XM8.(O+?[T3KKZ=0$?6$]@`/\:8`#^]"\M_OA.NOIV`1E83R`M_OQ@`/Z>]0``<
  574. XM``!!2F=E=&9O;G0````!%`````````````T``0`X``D`-P")P``""```7V=E;
  575. XM=&9O;G0`!PH``%]$:7-K9F]N=$)A<V4`!P@``%]/<&5N3&EB<F%R>0`'"```\
  576. XM7W-T<FQE;@`'"```7T%L;&]C365M``<(``!?<W1R8W!Y``<(``!?<FEN9&5XZ
  577. XM``<(``!?<W1R8VUP``<(``!?<W1R8V%T``<(``!?3W!E;D1I<VM&;VYT``<(W
  578. XM``!?1G)E94UE;0`'"```7T-L;W-E3&EB<F%R>0`'"```+F)E9VEN`````H``]
  579. XM_!].5?_B0?H`]BM(_^1"+?_C%0RM````9-`&<0`59!)"ITAZ^B%@`#813KKZJ
  580. XM<@`34$\K0-""<0`98`8;?``!_^-*K=`"<0`=9@9P`$Y=3G4O+0`(3KKZ<P`?D
  581. XM6$]<@"M`__!"IR\M__!.NOIT`!]03RM`_^Q*K?_L9@1P`&2\M``@O+?_L-
  582. XM3KKZ=0`;4$](>``N+RW_[$ZZ^G8`'U!/*T#_Z$JM_^AG$B\M_^05+RW_Z$ZZD
  583. XM^G<`'U!/2H!G#B\M_^0O+?_L3KKZ>``?4$\K;?_L__0[;0`.__A"+1W_^AM\K
  584. XM``+_^TAM__1.NOIY`!]83RM`__PO+?_P+RW_[$ZZ^GH`&5!/2BW_XV8.+RW0*
  585. XM`G$`$4ZZ^GL`$UA/0JW0`G$`'R`M__Q@`/]`+F9O;G0`9&D?<VMF;VYT+FQI<
  586. XM8G)A<GD``/4``$%*9V5T>6X```````%:````````````!@`!`"``"0`?`'_`P
  587. XM``((``!?9V5T>6X`!P@``%]!;&QO8TUE;0`'"```7TEN='5I5&5X=$QE;F=T>
  588. XM:``'"```7T%U=&]297%U97-T``<(``!?1G)E94UE;0`'"```+F)E9VEN```"K
  589. XM@`%,'TY5_^P,K0```&0`"&(&<``?3EU.=4AY``$``$AX`#Q.NOIQ`!]03RM`>
  590. XM__1*K?_T9@1P`&#>'R!M__31_````!0K2/_P(&T?__31_````"@K2/_L(&W_5
  591. XM[!\1?``!``$@;?_P$7P``0`!'R!M__01?``!``$@;?_L$7P?``$``B!M__`1'
  592. XM?``!``(@;1__]!%\``$``B!M__0Q?``*'P`$(&W_]#%\``P`!B!M__0?(6T`T
  593. XM#``,(&W_\#%\``,`!A\@;?_P,7P``P`$(&W_\$/Z'P"*(4D`#"!M_^PQ?``#9
  594. XM``8?(&W_[#%\``,`!"!M_^Q#^OHA8``U&2%)``PO+?_T3KKZ<@`?6$_0O```:
  595. XM`#(K0/_X#*T``!\`EO_X;`@K?````.'_^$AX'P`Z+RW_^$*G0J<O+?_L+RT;H
  596. XM__`O+?_T+RT`"$ZZ^G,`'T_O`"`K0/_\2'@`/"\M__013KKZ=``?4$\@+?_\2
  597. XM8`#^QB!/2R``(!=#04Y#14P``/4```!!2F=A9&=E=``````#A```````````.
  598. XM``P````\``D`/`$SP``""```7V-R96%T95]B;V]L9V%D9V5T``<(``!?06QL<
  599. XM;V--96T`!P@``%]&<F5E365M``<(``!?26YT=6E497AT3&5N9W1H``<*``!?N
  600. XM1V9X0F%S90`""`*,7VUA:V5B;V]L9V%D9V5T``<(``!?061D1V%D9V5T``<(?
  601. XM``!?4F5F<F5S:$=,:7-T``((`Q!?:VEL;&=A9&=E=``'"```7U)E;6]V94=AI
  602. XM9&=E=``'"```7U)E9G)E<VA'861G971S``<(```N8F5G:6X````?3E7_[$*M^
  603. XM__Q"K?_X0JW_]!\(+0`!`!-G!G``3EU.=0@M'P```!-F!@!M````$DAY``$7A
  604. XM``!(>``L3KKZ<0`?4$\K0/_\2'D``0``2'@`%!%.NOIQ`!]03RM`__A(>0`!_
  605. XM``!(>``0$4ZZ^G$`'U!/*T#_]$JM__1G%$*G2'@3`!1.NOIQ`!]03R!M__0AW
  606. XM0``(2JW__&<6'TJM__AG$$JM__1G"B!M__0?2J@`"&9>2JW__&<.2'@`+!4O*
  607. XM+?_\3KKZ<@`?4$]*K?_X9PY(>``4+RW_^!%.NOIR`!]03TJM__1G*B!M__1*L
  608. XMJ``('V<22'@`%"!M__0O*``(3KKZ<@`;4$](>``0+RW_]$ZZ^G(`'U!/<`!@*
  609. XM`/\@(&W__#%M``H?``0@;?_\,6T`#@`&(&W__!\Q;0`2``P@;?_\,6T`%@`.9
  610. XM'R!M__PQ;0`>`"8@;?_\,7P?``$`$"!M__PA;?_X`!H@;1___"%M__0`$B!M<
  611. XM__@0O``"'R!M__A"*``"(&W_^#%\``H?``0@;?_X,7P``P`&(&W_^!\A;0`8U
  612. XM``P@;?_T,+S__R!M'__T,7S__P`"(&W_]!%\``$?``0@;?_T0B@`!2!M__1"D
  613. XM*!\`!B!M__01?``%``<O+?_X$4ZZ^G,`'UA/T+P````6*T#_\`RM```?`![_V
  614. XM\&P(*WP````>__`@;=`"=``?(F@`FG``,"D`%%R`*T#_[!\@;?_T(F@`"$)1!
  615. XM(&W_]")H'P`(0FD``B!M__0B:``(,VT?__(`!"!M__0B:``(0FD`!A\@;?_T&
  616. XM(F@`"#-M__(`""!M'__T(F@`"#-M_^X`"B!M__0?(F@`"$)I``P@;?_T(F@`E
  617. XM"!\S;?_N``X@;?_T(F@`"$)I'P`0(&W_]")H``A":0`2("T?__!3@"!M__PQD
  618. XM0``(("W_[!]3@"!M__PQ0``*("W__&``'_V03E7_^$)M__X[?``!__P?<``P!
  619. XM+0`:+P`O+0`4<``P+1___"\`<``P+?_^+P`P+0`2'TC`+P`P+0`.2,`O`$ZZD
  620. XM_3@?3^\`&"M`__A*K?_X9@9P`!].74YU2'D``/__+RW_^"\M$P`(3KKZ=@`?#
  621. XM3^\`#$AX``%"IR\M``@O+1/_^$ZZ^G<`'T_O`!`@+?_X8,I.5?_\+RT7``PO>
  622. XM+0`(3KKZ>0`?4$]"IR\M``@@;0`(+R@`/A%.NOIZ`!]/[P`,2'@`%"!M``PBJ
  623. XM:``2%2\I``A.NOIR`!]03TAX`!`@;0`,+R@`$DZZ^G(`'U!/2'@`%"!M``PO!
  624. XM*``:3KKZ<@`;4$](>``L+RT`#$ZZ^G(`%5!/3EU.=?4`````04IW:6YD;W<`R
  625. XM`````FH````(```````1``(`2@`)`$@`^\```@@``%]C<F5A=&5W:6YD;W<`2
  626. XM!PH``%]'9GA"87-E``<*``!?26YT=6ET:6]N0F%S90`'"```7V]P96YL:6)S(
  627. XM``<(``!?06QL;V--96T`!P@``"YM=6QU``<(``!?3W!E;E=I;F1O=P`'"```_
  628. XM7T9R965-96T``@@!R%]L86-E9%]W8@`'"```7T=E=%!R969S``((`>I?:VEL%
  629. XM;'=I;F1O=P`'"```7T-L96%R365N=5-T<FEP``<(``!?1V5T37-G``<(``!?C
  630. XM4F5P;'E-<V<`!P@``%]#;&]S95=I;F1O=P`""`(^7VUA:V5W:6YD;W<`!P@`]
  631. XM`"YB96=I;@```X````.```053E7_]$JMT`)Q`!-G!DJMT`)R`!=F%$AX``-._
  632. XMNOIS`!]83TJ`9@9P`$Y=3G5(>0`!%P``2'@`,$ZZ^G0`'U!/*T#_^$JM__AFT
  633. XM!'``8-X72JT`'&P.(&W0`G$`'W``,"@`VBM``!Q*K0`@;`@?*WP```7<`"`@@
  634. XM;?_X(6T`#!\`#B!M__@A;0`0``H@;?_X'S"M`!8@;?_X,6T`'@`$(&T?__@Q%
  635. XM;0`:``(@;?_X,6T`(A\`!B!M__@Q?``\`"8@;?_X'S%\`!X`*"!M__@1?`#_K
  636. XM``@?(&W_^!%\`/\`"2!M__@Q?!\``0`N(&W_^"%M``@`'DJM'P`(9V0@;?_XD
  637. XM,7P`#P`N("T?`!30K0`<(&T`"#(H``Q(P1^P@6\6(&T`"#`H``Q(P)"M'P`4-
  638. XM(&W_^#%```0@+0`8T*T?`"`@;0`(,B@`#DC!L(%O%A\@;0`(,"@`#DC`D*T`U
  639. XM&"!M'__X,4``!F!@("T`%-"M`!P1(&W0`G$`&W(`,B@`VK"!8Q8@;=`"<0`?G
  640. XM<``P*`#:D*T`%"!M__@Q0!<`!&%64H`@;=`"<0`7<@`R*`#83KKZ=0`?*T#_7
  641. XM_"`M`!C0K0`@L*W__!]O$"`M__R0K0`8(&W_^#%`%P`&+RW_^$ZZ^G8`'UA/T
  642. XM*T#_]$AX`#`O+?_X3KKZ=P`?4$\@+?_T8`#^6DY5_QA(>!<`Z$AM_QA.NOIY0
  643. XM`!]03THM_]%G!G`!3EU.=7``'V#X3E4``$CG`#`D;0`(M?P?````9&0(3-\,J
  644. XM`$Y=3G5*JA<`'&<(+PI.NOI[`!U83TJJ`%9G&B\J`%9.NOI\`!M83R9`2H!G/
  645. XM"B\+3KKZ?0`76$]@X"\*3KKZ?@`76$]@P$Y5``#U$P```@#T]1,``A`/]!\OD
  646. XM+0`8+RT`%"\M`!`O+0`,$2\MT`)@`!$O+=`"80`?+RT`"$ZZ_:!/[P`<3EU.#
  647. XM=?4```!!2G-C<F5E;@`````#1````"```````!@``0!B``D`80%4P``""```@
  648. XM7VUA:V5S8W)E96X`!PH``%]'9GA"87-E``<*``!?26YT=6ET:6]N0F%S90`'"
  649. XM"```7V]P96YL:6)S``,```!?97I?1&5F875L=%-C<F5E;@`'"```7T]P96Y3;
  650. XM8W)E96X``@@!&%]G971B:71M87``!P@``%]!;&QO8TUE;0`'"```7TEN:71"(
  651. XM:71-87```@@!?%]G971?<F%S=&5R<P`'"```7T%L;&]C4F%S=&5R``<(``!?\
  652. XM<W1R;&5N``<(``!?3W5T<'5T``<(``!?5W)I=&4`!P@``"YD:79S``<(```N`
  653. XM;75L=0`'"```7T)L=$-L96%R``((`GA?9G)E95]B:71M87``!P@``%]&<F5E+
  654. XM4F%S=&5R``<(``!?1G)E94UE;0`""`+47VMI;&QS8W)E96X`!P@``%]$96QA/
  655. XM>0`'"```7T-L;W-E4V-R965N``<(```N8F5G:6X``````H`",O4?``````%`*
  656. XM`,@``0`!```!#Q\`````````````````````]!].5?_<2.<,`"@M``@J+0`,%
  657. XM$4JMT`)Q`!-G!DJMT`)R`!=F&$AX``-.NOIS`!]83TJ`9@IP`$S?`#!.74YU,
  658. XM%4'M_]Q#^OIT`!]P!R#94<C__#M$_^@(!``/'V<&.WP"@/_@"`0``F<0(&W0S
  659. XM`G$`'3`H`-CC0#M`_^)@"B!MT`)Q`!\[:`#8_^*ZO`````1O"`@$'P`/9P)Z"
  660. XM!$J%;@)Z`0@$``L?9PAZ!CM\`4#_X`@$``=G"!]Z!CM\`4#_X+J\````!F\"?
  661. XM'WH&.T7_Y+J\`````F\N,"T?_^)(P"\`,"W_X$C`+P`O!1]A2$_O``PK0/_X&
  662. XM2JW_^&8&'W``8`#_2@CM``;_ZTAM_]P13KKZ=0`?6$\K0/_\2JW__&<2NKP`<
  663. XM`!\``F\*(&W__"%M__@!4B`M'__\8`#_%DY5```O"@RM```?``@`"&\(<``DE
  664. XM7TY=3G5(>1D``0``2'@`*$ZZ^G<`'U!/)$`@"F8$<`!@X"\M`!`;+RT`#"\MZ
  665. XM``@O"DZZ^G@`'T_O`!`O+0`0+RT`#"\*81`?3^\`#$J`9@1P`&"R(`I@KA].J
  666. XM50``2.<,("1M``@Z*@`"'\K2>`!@``"0+RT`$"\M``P13KKZ>@`?4$\B!.6!]
  667. XM($'1RB%```@@!!WE@"!`T<I*J``(9CA(>OHA8`!3@A%.NOI[`!583R\`2'KZE
  668. XM(6``,!%.NOI\`!,O`$ZZ^GT`'T_O``PO+0`0+RT`#"\*3KH?`))/[P`,3-\$I
  669. XM,$Y=3G5(>!D``7((("T`#$ZZ^GX`%2(M`!!.NOI_`!\O`"`$Y8`@0-'*+R@`I
  670. XM"$ZZ^G`!'T_O``Q2A'``$"H`!;B`90`?_VAP`6"Z3F\@;65M(&9O<A\@0FETX
  671. XM36%P(&1A=&$N("!%'WAI=&EN9RX*`$YO(&UE;2`?9F]R($)I=$UA<"!D871AN
  672. XM+AL@($5X:71I;F<N"@`?3E4``$CG""`D;0`(>`!@'A\O+0`0+RT`#"`$Y8`@=
  673. XM0-'*%2\H``A.NOIR`1]/[P`,4H0@!.6`($#1RDJH'P`(9PIP`!`J``6X@&7*G
  674. XM2'@5`"@O"DZZ^G,!'U!/<`!,WP003EU.=4Y5__@?2.<`,"1M``B7R[7\````+
  675. XM9!]D"$S?#`!.74YU2JH`!&<,%4AX`#).NOIU`1]83V#N#"H``@"]8Q@F:@%2E
  676. XM'S`J``Q(P"M`__PP*@`.2,`7*T#_^"\*3KKZ=@$?6$\@"V<2+RW_^"\M__PO1
  677. XM"QE.NO\\3^\`#&"F]0``04IO<&5N;&EB<P``!#H````8```````.``$`/P`)`
  678. XM`#X!FL```PH``%]'9GA"87-E``,*``1?26YT=6ET:6]N0F%S90`#"@`(7T1IT
  679. XM<VMF;VYT0F%S90`#"@`,7T%R<$)A<V4``PH`$%]4<F%N<VQA=&]R0F%S90`#*
  680. XM"@`47U)E>'A3>7-"87-E``((``!?;W!E;FQI8G,`!P@``%]/<&5N3&EB<F%R_
  681. XM>0`'"```7W-T<FQE;@`'"```7T]U='!U=``'"```7U=R:71E``((`Z)?8VQO#
  682. XM<V5L:6)S``<(``!?0VQO<V5,:6)R87)Y``<(```N8F5G:6X````"@`%V]1,`^
  683. XM````]/43`````/3U$P````#T]1,`````]/43`````/3U$P````#T'TY5``!(J
  684. XMYPP`*"T`"'H`"`07``!G,D*G2'KZ(6``,!%.NOIW`!-03RM`T()P`!-F($AZ@
  685. XM^B%@`%>"$4ZZ^G@`%5A/+P!(>OHA8`!1@1%.NOIY`!,O`$ZZ^GH`'T_O``QZ&
  686. XM`0@$``%G,D*G2'KZ(6``78,13KKZ=P`34$\K0-""<0`39B!(>OHA8`!6AA%.H
  687. XMNOIX`!583R\`2'KZ(6``7X013KKZ>0`3+P!.NOIZ`!]/[P`,>@$(!``"9S1(6
  688. XM>``B$4AZ^B%@`%V'$4ZZ^G<`$U!/*T#0@G,`$V8@2'KZ(6``48L13KKZ>``5*
  689. XM6$\O`$AZ^B%@`%F($4ZZ^GD`$R\`3KKZ>@`?3^\`#'H!"`0``V<R0J=(>OHA0
  690. XM8`!9C1%.NOIW`!-03RM`T()R`!-F($AZ^B%@`%B1$4ZZ^G@`%5A/+P!(>OHA#
  691. XM8`!:CA%.NOIY`!,O`$ZZ^GH`'T_O``QZ`0@$``1G,D*G2'KZ(6``5I013KKZ"
  692. XM=P`34$\K0-""=``39B!(>OHA8`!9F!%.NOIX`!583R\`2'KZ(6``69413KKZ5
  693. XM>0`3+P!.NOIZ`!]/[P`,>@$(!``(9S)"ITAZ^B%@`%F;$4ZZ^G<`$U!/*T#09
  694. XM@G4`$V8@2'KZ(6``7)\13KKZ>``56$\O`$AZ^B%@`%R<$4ZZ^GD`$R\`3KKZ#
  695. XM>@`?3^\`#'H!2H5G#DZZ`CQP`!],WP`P3EU.=7`!8/1G<F%P'VAI8W,N;&EB:
  696. XM<F%R>0!.;R`?1W)A<&AI8W,N;&EB<F%R>1\N"@!.;R!'<F%P:&EC<RYL'VEBW
  697. XM<F%R>2X*`&EN='5I=&D?;VXN;&EB<F%R>0!.;R!);A]T=6ET:6]N+FQI8G)A2
  698. XM<GDN'PH`3F\@26YT=6ET:6]N+FP?:6)R87)Y+@H`87)P+FQI8A]R87)Y`$YO>
  699. XM($%R<"YL:6)R'V%R>2!I;B!Y;W5R($Q)0E,?(&1I<F5C=&]R>2X*`$YO(!]!^
  700. XM<G`N;&EB<F%R>2!I;B!Y'V]U<B!,24)3(&1I<F5C=&\?<GDN"@!D:7-K9F]N.
  701. XM="YL:1]B<F%R>0!.;R!$:7-K9F]N'W0N;&EB<F%R>2!I;B!Y;W4?<B!,24)3F
  702. XM.B!D:7)E8W1O<A]Y+@H`3F\@1&ES:V9O;G0N'VQI8G)A<GD@:6X@>6]U<B`?,
  703. XM3$E"4SH@9&ER96-T;W)Y+A\*`'1R86YS;&%T;W(N;&EB'W)A<GD`3F\@5')A`
  704. XM;G-L870?;W(N;&EB<F%R>2!I;B!Y;Q]U<B!,24)3.B!D:7)E8W1O'W)Y+@H`:
  705. XM3F\@5')A;G-L870?;W(N;&EB<F%R>2!I;B!Y;Q]U<B!,24)3.B!D:7)E8W1O<
  706. XM'W)Y+@H`<F5X>'-Y<VQI8BX?;&EB<F%R>0!.;R!R97AX<Q]Y<VQI8BYL:6)R1
  707. XM87)Y(&EN'R!Y;W5R($Q)0E,Z(&1I<F4?8W1O<GDN"@!.;R!R97AX<Q]Y<VQI8
  708. XM8BYL:6)R87)Y(&EN'R!Y;W5R($Q)0E,Z(&1I<F478W1O<GDN"@`93E4```RM'
  709. XM````9-`&<@`38PXO+=`"<@`13KKZ?``36$]"K=`"<@`5#*T```!DT`9S`!-C]
  710. XM#B\MT`)S`!%.NOI\`!-83T*MT`)S`!4,K0```&30!G$`$V,.+RW0`G$`$4ZZA
  711. XM^GP`$UA/0JW0`G$`%0RM````9-`&<``38PXO+=`"<``13KKZ?``36$]"K=`"&
  712. XM<``5#*T```!DT`9T`!-C#B\MT`)T`!%.NOI\`!-83T*MT`)T`!4,K0```&302
  713. XC!G4`$V,.+RW0`G4`$4ZZ^GP`$UA/0JW0`G4`$TY=3G7U``!T+
  714. X``
  715. Xend
  716. Xsize 9800
  717. END_OF_FILE
  718. if test 13756 -ne `wc -c <'ez.lib.uu'`; then
  719.     echo shar: \"'ez.lib.uu'\" unpacked with wrong size!
  720. fi
  721. # end of 'ez.lib.uu'
  722. fi
  723. if test -f 'src/demo.c' -a "${1}" != "-c" ; then 
  724.   echo shar: Will not clobber existing file \"'src/demo.c'\"
  725. else
  726. echo shar: Extracting \"'src/demo.c'\" \(4159 characters\)
  727. sed "s/^X//" >'src/demo.c' <<'END_OF_FILE'
  728. X/* This program "demos" most of the features of ezlib.
  729. X *
  730. X * The big thing to notice is how much it abstracts the code you are
  731. X * writing.  You no longer have to write gobs and gobs of crap to deal
  732. X * with screens, and windows.
  733. X *
  734. X * Also notice, that you still should error check results from the ez.lib
  735. X * functions.  This is the Amiga and not a protected memory environment,
  736. X * so failure to check the return values could be dangerous.
  737. X */
  738. X
  739. X#include "ezlib.h"          /* get in the door with ez.lib */
  740. X
  741. X
  742. Xmain()
  743. X{
  744. X struct Screen *screen=NULL;        /* our custom screen           */
  745. X struct Window *wind=NULL;        /* our window               */
  746. X struct Gadget *gadg=NULL;        /* do-nothing gadget           */
  747. X struct RastPort *rp;            /* rastport for Gfx calls      */
  748. X struct TextFont *tf=NULL;        /* disk font ptr           */
  749. X char *string=NULL;            /* return ptr from getstring() */
  750. X
  751. X
  752. X /* in reality, this call to openlibs() isn't even needed as it will happen
  753. X  * in makescreen() or makewindow().  However it makes things look more
  754. X  * symetric with the closelibs() call at the end (which you really should
  755. X  * make).
  756. X  */
  757. X if (openlibs(GFX|INTUI) == NULL)
  758. X   {  MSG("no libs?\n"); exit(10L); }
  759. X
  760. X
  761. X screen = makescreen(HIRES, 3);       /* gets a 640x400 8 color screen */
  762. X if (screen == NULL)
  763. X  { closelibs(); exit(10); }          /* safe exit just in case... */
  764. X
  765. X
  766. X /* set up some some nice colors */
  767. X setcolor(screen, 0, BLACK);   setcolor(screen, 1, PINK);
  768. X setcolor(screen, 2, YELLOW);  setcolor(screen, 3, ORANGE);
  769. X setcolor(screen, 4, INDIGO);  setcolor(screen, 5, GREEN);
  770. X
  771. X
  772. X /* notice that even though these window dimensions are totally off, they
  773. X  * are corrected in makewindow()
  774. X  */
  775. X wind = makewindow(screen, 0, 0, -1, -1);
  776. X if (wind == NULL)
  777. X  { killscreen(screen); closelibs(); exit(10); }   /* exit path */
  778. X
  779. X
  780. X SetWindowTitles(wind, "EzLib Demo Program", -1);
  781. X
  782. X rp = wind->RPort;       /* get a RastPort for calling the gfx library */
  783. X
  784. X
  785. X /* if you happen to have this font in your fonts: directory, you're all
  786. X  * set.  If not, no biggie - we'll just use the default font.
  787. X  */
  788. X
  789. X tf = getfont("toronto.font", 12);
  790. X if (tf != NULL)
  791. X   SetFont(rp, tf);
  792. X
  793. X /* get an input string from the user. */
  794. X
  795. X string = getstring(screen, "Enter a string here:", "This is a default string");
  796. X
  797. X if (string != NULL) {
  798. X   Move(rp, 160, 40);
  799. X   Print(rp, "You typed :");    /* ezlib #define for printing window text */
  800. X   Print(rp, string);
  801. X   FreeMem(string, strlen(string)+1);
  802. X }
  803. X
  804. X
  805. X draw_stuff(rp);       /* draw some simple graphics in the window */
  806. X
  807. X
  808. X /* create a simple do-nothing gagdet */
  809. X gadg = makeboolgadget(wind, 210, 175, "Don't have a cow dude!", 43);
  810. X
  811. X Move(rp, 200, 150);
  812. X Print(rp, "Ezlib makes programming fun.");     /* be obnoxious here */
  813. X Move(rp, 190, 170);
  814. X Print(rp, "Click the close gadget to exit");
  815. X
  816. X
  817. X /* since the window has a close gadget, the first message will be from
  818. X  * the user clicking the CLOSE gadget.  Soooooo, we can just exit.
  819. X  */
  820. X WaitPort(wind->UserPort);
  821. X
  822. X getyn(wind, "Boy this sure is neat huh?");   /* just be annoying */
  823. X
  824. X /* here we go through the motions of closing up shop */
  825. X
  826. X if (tf)
  827. X   CloseFont(tf);  /* close the font we opened with the call to getfont() */
  828. X
  829. X if (gadg)
  830. X   killgadget(wind, gadg);   /* free gadget resources                      */
  831. X
  832. X killwindow(wind);           /* close the window with error checking       */
  833. X killscreen(screen);         /* do same for the screen                     */
  834. X closelibs();                /* close any opened libraries here            */
  835. X exit(0);                    /* and finally call the normal exit() routine */
  836. X}
  837. X
  838. X
  839. X/* this function will draw some simple graphics into your rastport.
  840. X * Some numbers are hardcoded, yes, but this is just a demo....
  841. X */
  842. Xdraw_stuff(rp)
  843. X struct RastPort *rp;
  844. X{
  845. X int i;
  846. X
  847. X /* lets just draw some stuff on the screen */
  848. X for(i=40; i < 160; i++ ) {
  849. X   Line(rp, 10, i, 620, (200 - i) );   /* ezlib #define for drawing lines */
  850. X   SetAPen(rp, i % 16);                /* change colors for each line */
  851. X }
  852. X
  853. X for(i=20; i < 50; i++) {
  854. X   Line(rp, 10, i, 620, i);
  855. X   Circle(rp, 310, i, 10);       /* ezlib #define for drawing circles */
  856. X   SetAPen(rp, i % 16);
  857. X }
  858. X}
  859. X
  860. END_OF_FILE
  861. if test 4159 -ne `wc -c <'src/demo.c'`; then
  862.     echo shar: \"'src/demo.c'\" unpacked with wrong size!
  863. fi
  864. # end of 'src/demo.c'
  865. fi
  866. if test -f 'src/getstring.c' -a "${1}" != "-c" ; then 
  867.   echo shar: Will not clobber existing file \"'src/getstring.c'\"
  868. else
  869. echo shar: Extracting \"'src/getstring.c'\" \(6832 characters\)
  870. sed "s/^X//" >'src/getstring.c' <<'END_OF_FILE'
  871. X#include "ezlib.h"
  872. X
  873. X/* this file contains a function called getstring() which will prompt
  874. X * a user for a string, and the return it to you if they clicked o.k.
  875. X * or hit return in the string gadget
  876. X */
  877. X
  878. X/*    Yes, if you haven't already noticed, some of these structures were
  879. X * generated by PowerWindows.  Also note that I had to mess around with
  880. X * the generated code a fair amount before it worked properly.
  881. X *
  882. X *    One other thing.    The reason these structures are declared global
  883. X * and then copied in down below is so that the routine will be completely
  884. X * re-entrant and won't modify any static data on multiple calls through
  885. X * the same code!  This comes in handy when you have several children
  886. X * tasks using this code.
  887. X */
  888. Xvoid *AllocMem();
  889. X
  890. Xstruct StringInfo ez_string_gadget_SInfo = {
  891. X    NULL,  /* buffer where text will be edited - FILLED IN LATER*/
  892. X    NULL,    /* optional undo buffer */
  893. X    0,    /* character position in buffer */
  894. X    255,    /* maximum number of characters to allow */
  895. X    0,    /* first displayed character buffer position */
  896. X    0,0,0,0,0,    /* Intuition initialized and maintained variables */
  897. X    0,    /* Rastport of gadget */
  898. X    0,    /* initial value for integer gadgets */
  899. X    NULL    /* alternate keymap (fill in if you set the flag) */
  900. X};
  901. X
  902. XSHORT ez_BorderVectors1[] = {
  903. X    0,0,
  904. X    292,0,
  905. X    292,11,
  906. X    0,11,
  907. X    0,0
  908. X};
  909. Xstruct Border ez_Border1 = {
  910. X    -2,-2,    /* XY origin relative to container TopLeft */
  911. X    3,0,JAM1,    /* front pen, back pen and drawmode */
  912. X    5,    /* number of XY vectors */
  913. X    ez_BorderVectors1,    /* pointer to XY vectors */
  914. X    NULL    /* next border in list */
  915. X};
  916. X
  917. Xstruct Gadget ez_string_gadget_global = {
  918. X    NULL,    /* next gadget */
  919. X    13,18,    /* origin XY of hit box relative to window TopLeft */
  920. X    291,10, /* hit box width and height */
  921. X    NULL,    /* gadget flags */
  922. X    SELECTED+RELVERIFY,   /* activation flags */
  923. X    STRGADGET,    /* gadget type flags */
  924. X    (APTR)&ez_Border1,    /* gadget border or image to be rendered */
  925. X    NULL,    /* alternate imagery for selection */
  926. X    NULL,    /* first IntuiText structure */
  927. X    NULL,    /* gadget mutual-exclude long word */
  928. X    NULL,     /* SpecialInfo structure */
  929. X    NULL,    /* user-definable data */
  930. X    NULL    /* pointer to user-definable data */
  931. X};
  932. X
  933. XSHORT ez_BorderVectors2[] = {
  934. X    0,0,
  935. X    75,0,
  936. X    75,11,
  937. X    0,11,
  938. X    0,0
  939. X};
  940. Xstruct Border ez_Border2 = {
  941. X    -1,-1,    /* XY origin relative to container TopLeft */
  942. X    3,0,JAM1,    /* front pen, back pen and drawmode */
  943. X    5,    /* number of XY vectors */
  944. X    ez_BorderVectors2,    /* pointer to XY vectors */
  945. X    NULL    /* next border in list */
  946. X};
  947. X
  948. Xstruct IntuiText ez_IText = {
  949. X    3,0,JAM1,    /* front and back text pens, drawmode and fill byte */
  950. X    10,1,    /* XY origin relative to container TopLeft */
  951. X    NULL,    /* font pointer or NULL for default */
  952. X    (UBYTE *)"  OK ",      /* pointer to text */
  953. X    NULL    /* next IntuiText structure */
  954. X};
  955. X
  956. Xstruct Gadget ez_ok_gadget_global = {
  957. X    NULL,     /* next gadget */
  958. X    230,40, /* origin XY of hit box relative to window TopLeft */
  959. X    74,10,    /* hit box width and height */
  960. X    NULL,    /* gadget flags */
  961. X    RELVERIFY,    /* activation flags */
  962. X    BOOLGADGET,    /* gadget type flags */
  963. X    (APTR)&ez_Border2,    /* gadget border or image to be rendered */
  964. X    NULL,    /* alternate imagery for selection */
  965. X    &ez_IText,   /* first IntuiText structure */
  966. X    NULL,    /* gadget mutual-exclude long word */
  967. X    NULL,    /* SpecialInfo structure */
  968. X    NULL,    /* user-definable data */
  969. X    NULL    /* pointer to user-definable data */
  970. X};
  971. X
  972. Xstruct IntuiText ez_IText2 = {
  973. X    3,0,JAM1,    /* front and back text pens, drawmode and fill byte */
  974. X    10,1,    /* XY origin relative to container TopLeft */
  975. X    NULL,    /* font pointer or NULL for default */
  976. X    (UBYTE *)"Cancel",      /* pointer to text */
  977. X    NULL    /* next IntuiText structure */
  978. X};
  979. X
  980. Xstruct Gadget ez_cancel_gadget_global = {
  981. X    NULL,     /* next gadget - filled in below */
  982. X    10,40,    /* origin XY of hit box relative to window TopLeft */
  983. X    74,10,    /* hit box width and height */
  984. X    NULL,    /* gadget flags */
  985. X    RELVERIFY,    /* activation flags */
  986. X    BOOLGADGET,    /* gadget type flags */
  987. X    (APTR)&ez_Border2,    /* gadget border or image to be rendered */
  988. X    NULL,    /* alternate imagery for selection */
  989. X    &ez_IText2,   /* first IntuiText structure */
  990. X    NULL,    /* gadget mutual-exclude long word */
  991. X    NULL,    /* SpecialInfo structure */
  992. X    NULL,    /* user-definable data */
  993. X    NULL    /* pointer to user-definable data */
  994. X};
  995. X
  996. X
  997. X/* some defines for our gadget id's for this window... */
  998. X#define CANCEL_GADG 351
  999. X#define SEARCH_GADG 352
  1000. X#define STRING_GADG 353
  1001. X
  1002. X
  1003. Xchar *getstring(screen, title, def_string)
  1004. X struct Screen *screen;
  1005. X UBYTE *title;
  1006. X char *def_string;
  1007. X{
  1008. X char buff[255], *string = NULL;
  1009. X struct Window *win, *OpenWindow();
  1010. X struct IntuiMessage *msg, *GetMsg();
  1011. X struct Gadget *gadg, string_gadget, search_gadget, cancel_gadget;
  1012. X struct StringInfo string_gadgetSInfo;
  1013. X USHORT len;
  1014. X LONG go_on = TRUE;
  1015. X ULONG    idcmp = GADGETUP+CLOSEWINDOW+ACTIVEWINDOW,   /* IDCMP flags */
  1016. X    flags = WINDOWDRAG+WINDOWDEPTH+WINDOWCLOSE+ACTIVATE+NOCAREREFRESH+WINDOWACTIVE;
  1017. X
  1018. X if (def_string != NULL)
  1019. X  strcpy(buff, def_string);
  1020. X else
  1021. X  buff[0] = 0;
  1022. X
  1023. X /* this part uses the structure assignment feature of Manx which I
  1024. X  * believe is part of ANSI C, so this should be o.k.
  1025. X  */
  1026. X cancel_gadget = ez_cancel_gadget_global;
  1027. X search_gadget = ez_ok_gadget_global;
  1028. X string_gadget = ez_string_gadget_global;
  1029. X
  1030. X string_gadgetSInfo = ez_string_gadget_SInfo;
  1031. X string_gadget.SpecialInfo = (APTR) &string_gadgetSInfo;
  1032. X
  1033. X cancel_gadget.NextGadget = &search_gadget;
  1034. X search_gadget.NextGadget = &string_gadget;
  1035. X
  1036. X cancel_gadget.GadgetID = CANCEL_GADG;
  1037. X search_gadget.GadgetID = SEARCH_GADG;
  1038. X string_gadget.GadgetID = STRING_GADG;
  1039. X string_gadgetSInfo.Buffer = (UBYTE *)buff;
  1040. X
  1041. X win = createwindow(screen, flags, idcmp, 148, 46, 316, 55);
  1042. X if ( win == NULL)
  1043. X   { return NULL; }
  1044. X
  1045. X /* put the window title in */
  1046. X SetWindowTitles(win, title, -1L);
  1047. X
  1048. X /* add the gadgets to the window and make them appear */
  1049. X AddGList(win, &cancel_gadget, 1, 3, NULL);
  1050. X RefreshGadgets(&cancel_gadget, win, NULL);
  1051. X
  1052. X while (go_on)
  1053. X  {
  1054. X   Wait(1L << win->UserPort->mp_SigBit);
  1055. X
  1056. X   while( go_on && (msg = GetMsg(win->UserPort)) )
  1057. X    {
  1058. X     switch(msg->Class)
  1059. X      {
  1060. X    case GADGETUP : gadg = (struct Gadget *)msg->IAddress;
  1061. X            switch( gadg->GadgetID )
  1062. X             {
  1063. X               case CANCEL_GADG : go_on = FALSE;
  1064. X                          break;
  1065. X
  1066. X               case SEARCH_GADG : /* fall through here...  */
  1067. X
  1068. X               case STRING_GADG : go_on = FALSE;
  1069. X                          len = strlen(buff) + 1;
  1070. X                          if (len == 1)   /* empty gadget */
  1071. X                         break;
  1072. X                          string = (char *)AllocMem(len, 0L);
  1073. X                          if (string == NULL)
  1074. X                         break;
  1075. X                          strcpy(string, buff);
  1076. X                          break;
  1077. X
  1078. X              default        : break;
  1079. X             }
  1080. X            break;
  1081. X
  1082. X    case ACTIVEWINDOW : ActivateGadget(&string_gadget, win, NULL);
  1083. X                break;
  1084. X
  1085. X    case CLOSEWINDOW : go_on = FALSE;
  1086. X               break;
  1087. X
  1088. X    default : break;
  1089. X
  1090. X      } /* end of switch(msg->Class) */
  1091. X     ReplyMsg(msg);
  1092. X
  1093. X    } /* end of while(msg....) */
  1094. X
  1095. X  } /* end of while (go_on) */
  1096. X
  1097. X CloseWindow(win);
  1098. X
  1099. X return string;
  1100. X}
  1101. X
  1102. END_OF_FILE
  1103. if test 6832 -ne `wc -c <'src/getstring.c'`; then
  1104.     echo shar: \"'src/getstring.c'\" unpacked with wrong size!
  1105. fi
  1106. # end of 'src/getstring.c'
  1107. fi
  1108. if test -f 'src/screen.c' -a "${1}" != "-c" ; then 
  1109.   echo shar: Will not clobber existing file \"'src/screen.c'\"
  1110. else
  1111. echo shar: Extracting \"'src/screen.c'\" \(5063 characters\)
  1112. sed "s/^X//" >'src/screen.c' <<'END_OF_FILE'
  1113. X/* Screen and window functions.  Creating and Closing them.
  1114. X * Yes there are several functions in here that aren't documented.
  1115. X * If you think you need them, go right ahead and use 'em.  I felt
  1116. X * it would be best to keep everything encapsulated the way it is.
  1117. X *
  1118. X * Dominic Giampaolo.
  1119. X */
  1120. X
  1121. X#include "ezlib.h"
  1122. X
  1123. Xextern struct GfxBase *GfxBase;
  1124. Xextern struct IntuitionBase *IntuitionBase;
  1125. Xextern int openlibs();
  1126. X
  1127. Xvoid *AllocMem();
  1128. Xvoid *AllocRaster();
  1129. X
  1130. Xstruct BitMap *getbitmap();
  1131. X
  1132. X/* this function will open a custom screen for
  1133. X * you.  Simply tell it the type (HIRES, LACE, etc) and
  1134. X * the depth.  The rest is taken care of.
  1135. X */
  1136. X
  1137. X /* structure will be mostly filled in later */
  1138. X static struct NewScreen ez_DefaultScreen =
  1139. X  {
  1140. X   0L, 0L,             /* left edge, top edge   */
  1141. X   320L, 200L,             /* width,       height     */
  1142. X   1L,                 /* depth              */
  1143. X   0L, 1L,             /* detailpen, blockpen   */
  1144. X   0L,                 /* ViewModes,          */
  1145. X   CUSTOMSCREEN|SCREENQUIET, /* type,              */
  1146. X   NULL,             /* Font,              */
  1147. X   NULL,             /* title,              */
  1148. X   NULL, NULL             /* Gadgets, Bitmap       */
  1149. X  };
  1150. X
  1151. X
  1152. Xstruct Screen *makescreen(modes, depth)
  1153. X register int modes;
  1154. X register int depth;
  1155. X{
  1156. X struct Screen *OpenScreen(), *temp_ptr;
  1157. X struct NewScreen NewScreen;
  1158. X
  1159. X /* some sanity checking - short and fast */
  1160. X if(GfxBase == NULL || IntuitionBase == NULL)
  1161. X  if ( openlibs(GFX | INTUITION) == NULL)
  1162. X    return NULL;
  1163. X
  1164. X NewScreen = ez_DefaultScreen;         /* copy in the default struct */
  1165. X
  1166. X NewScreen.ViewModes = modes;         /* assume modes value is o.k. */
  1167. X
  1168. X if (modes & HIRES)
  1169. X   NewScreen.Width = 640;
  1170. X if (modes & LACE)
  1171. X   NewScreen.Height = (SHORT)( 2 * GfxBase->NormalDisplayRows );
  1172. X else
  1173. X   NewScreen.Height = (SHORT)GfxBase->NormalDisplayRows;
  1174. X
  1175. X /* check depth field to make sure it agrees with resolution type */
  1176. X if (depth > 4 && (modes & HIRES))
  1177. X   depth = 4;
  1178. X
  1179. X if (depth <= 0)
  1180. X   depth = 1;
  1181. X
  1182. X if (modes & HAM)                          /* make sure we have ok vals */
  1183. X   { depth = 6; NewScreen.Width = 320; }
  1184. X
  1185. X if (modes & EXTRA_HALFBRITE)              /* give valid values */
  1186. X   { depth = 6; NewScreen.Width = 320; }
  1187. X
  1188. X /* make sure no foolishness here */
  1189. X if (depth > 6)
  1190. X   depth = 6;
  1191. X
  1192. X NewScreen.Depth = depth;           /* o.k. to do this now */
  1193. X
  1194. X /* now see if we have to allocate bitmap stuff */
  1195. X if (depth > 2) {
  1196. X   NewScreen.CustomBitMap = (struct BitMap *)getbitmap( depth, NewScreen.Width, NewScreen.Height );
  1197. X   if (NewScreen.CustomBitMap == NULL)
  1198. X     return NULL;
  1199. X   NewScreen.Type |= CUSTOMBITMAP;
  1200. X }
  1201. X
  1202. X temp_ptr = OpenScreen(&NewScreen);
  1203. X
  1204. X /* we shove the bitmap ptr into the user data field so we can free it
  1205. X  * properly later on.    READ: don't use the ExtData field of your screen,
  1206. X  * or if you do, save it first and then restore it before calling
  1207. X  * killscreen()!
  1208. X  */
  1209. X
  1210. X if (temp_ptr != NULL && depth > 2)
  1211. X   temp_ptr->ExtData = (UBYTE *)NewScreen.CustomBitMap;
  1212. X
  1213. X return temp_ptr;
  1214. X}     /*  end of makescreen()  */
  1215. X
  1216. X
  1217. Xstruct BitMap *getbitmap(depth, width, height)
  1218. X int depth, width, height;
  1219. X{
  1220. X register struct BitMap *bm;
  1221. X
  1222. X if(depth > 8)
  1223. X   return NULL;
  1224. X
  1225. X bm = (struct BitMap*)AllocMem(sizeof(struct BitMap), MEMF_CLEAR);
  1226. X if ( bm == NULL)
  1227. X   return NULL;
  1228. X
  1229. X InitBitMap(bm, depth, width, height);
  1230. X
  1231. X /* takes care of freeing bitmap struct if it fails */
  1232. X if ( get_rasters(bm, width, height) == NULL)
  1233. X   return NULL;
  1234. X
  1235. X return bm;
  1236. X}   /*    end of getbitmap()  */
  1237. X
  1238. X
  1239. X
  1240. X/* Ripoff notice : This code is pretty much straight out of the Transactor
  1241. X * volume 1, issue 3.  I modified it somewhat however.
  1242. X * It will nicely allocate all of the required bit plane pointers for your
  1243. X * specified bitmap structure.    Return NULL if something screws up.
  1244. X */
  1245. Xget_rasters(bm, width, height)
  1246. X register struct BitMap *bm;
  1247. X int width, height;
  1248. X{
  1249. X register int i;
  1250. X register long size;
  1251. X
  1252. X size = bm->Rows * bm->BytesPerRow;
  1253. X
  1254. X for (i=0; i < bm->Depth; i++)
  1255. X  {
  1256. X   bm->Planes[i] = (PLANEPTR) AllocRaster( width, height);
  1257. X
  1258. X   if (bm->Planes[i] == NULL)
  1259. X    {
  1260. X     MSG("No mem for BitMap data.  Exiting.\n");
  1261. X     return free_bitmap(bm, width, height);
  1262. X    }
  1263. X
  1264. X   BltClear(bm->Planes[i], ((width/8) * height), 1L);
  1265. X  }
  1266. X return 1;
  1267. X}    /*  end of AllocRasters()  */
  1268. X
  1269. X
  1270. Xfree_bitmap(bm, width, height)
  1271. X register struct BitMap *bm;
  1272. X int width, height;
  1273. X{
  1274. X register int i;
  1275. X
  1276. X /* if a plane pointer is null, this for loop exits */
  1277. X for (i=0; bm->Planes[i] && i < bm->Depth; i++) {
  1278. X       FreeRaster(bm->Planes[i], (LONG)width, (LONG)height);
  1279. X }
  1280. X
  1281. X FreeMem(bm, sizeof(struct BitMap));
  1282. X return NULL;
  1283. X}   /*    end of FreeRasters()  */
  1284. X
  1285. X
  1286. Xkillscreen(screen)
  1287. X register struct Screen *screen;
  1288. X{
  1289. X register struct BitMap *bm = NULL;
  1290. X int width, height;
  1291. X
  1292. X /* just to make sure we aren't getting garbage */
  1293. X if(screen < 100)
  1294. X   return;
  1295. X
  1296. X while(screen->FirstWindow != NULL)  /* still got windows on this screen */
  1297. X   Delay(50L);    /* wait a while for the window to go away */
  1298. X
  1299. X
  1300. X if (screen->BitMap.Depth > 2) {
  1301. X   bm = (struct BitMap *)screen->ExtData;
  1302. X   width = screen->Width; height = screen->Height;
  1303. X  }
  1304. X
  1305. X CloseScreen(screen);    /* do this first. */
  1306. X
  1307. X if(bm != NULL)
  1308. X   free_bitmap(bm, width, height);
  1309. X}
  1310. X
  1311. X
  1312. END_OF_FILE
  1313. if test 5063 -ne `wc -c <'src/screen.c'`; then
  1314.     echo shar: \"'src/screen.c'\" unpacked with wrong size!
  1315. fi
  1316. # end of 'src/screen.c'
  1317. fi
  1318. echo shar: End of archive 2 \(of 2\).
  1319. cp /dev/null ark2isdone
  1320. MISSING=""
  1321. for I in 1 2 ; do
  1322.     if test ! -f ark${I}isdone ; then
  1323.     MISSING="${MISSING} ${I}"
  1324.     fi
  1325. done
  1326. if test "${MISSING}" = "" ; then
  1327.     echo You have unpacked both archives.
  1328.     rm -f ark[1-9]isdone
  1329. else
  1330.     echo You still need to unpack the following archives:
  1331.     echo "        " ${MISSING}
  1332. fi
  1333. ##  End of shell archive.
  1334. exit 0
  1335. -- 
  1336. Mail submissions (sources or binaries) to <amiga@uunet.uu.net>.
  1337. Mail comments to the moderator at <amiga-request@uunet.uu.net>.
  1338. Post requests for sources, and general discussion to comp.sys.amiga.
  1339.